package com.lxl.action;

import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.List;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;

import org.apache.struts2.ServletActionContext;
import org.springframework.stereotype.Controller;
import org.springframework.transaction.annotation.Transactional;

import com.lxl.model.Post;
import com.lxl.service.PostService;
import com.opensymphony.xwork2.ActionContext;

/**
 * 帖子_列出帖子Action
 * 
 * @author 刘星鹭
 * @Email liuxinglumail@163.com
 * @version 创建时间： 2014年9月9日 下午4:55:15
 */
@Controller
@Transactional
public class ListPostAction {
    @Resource
    PostService postService;// 注入帖子Service
    private List<Post> postList;// 帖子列表
    private int pageNow = 1;// 当前页数
    private int pageCount = 0;// 总页数

    /**
     * 调用本Action时执行本方法
     * 
     * @return 用于Action判断跳转方向的字符串
     * @throws UnsupportedEncodingException 
     */
    public String execute() throws UnsupportedEncodingException {
        postList=new ArrayList<Post>();
        ActionContext context = ActionContext.getContext();// 获取action上下文
        HttpServletRequest request = (HttpServletRequest) context
                .get(ServletActionContext.HTTP_REQUEST);
        pageCount = postService.pageCount();
        request.setAttribute("pageCount", pageCount);
        request.setAttribute("pageNow", pageNow);
        List<Post> sqlPostList = postService.listTen(pageNow);        
        for(int i=0;i<sqlPostList.size();i++){
            int charsCount=0;
            int bytesCount=0;
            for(int j=0;j<sqlPostList.get(i).getPostTitle().length();j++){
                String tempChar=""+sqlPostList.get(i).getPostTitle().charAt(j);
                bytesCount+=tempChar.getBytes("GBK").length;
                charsCount++;                
                if(bytesCount>=15){
                    bytesCount-=tempChar.getBytes("GBK").length;
                    charsCount--; 
                }
            }
            postList.add(new Post(sqlPostList.get(i).getPostTitle(), sqlPostList.get(i).getPostContent(), sqlPostList.get(i).getPostUser(), sqlPostList.get(i).getPostTieba()));
            if(postList.get(i).getPostTitle().getBytes("GBK").length>=15){
                postList.get(i).setPostTitle(postList.get(i).getPostTitle().substring(0, charsCount)+"...");
            }
        }
        return "success";
    }

    /**
     * 获得帖子列表
     * 
     * @return 帖子列表
     */
    public List<Post> getPostList() {
        return postList;
    }

    /**
     * 设置帖子列表
     * 
     * @param postList
     *            帖子列表
     */
    public void setPostList(List<Post> postList) {
        this.postList = postList;
    }

    /**
     * 获得当前页数
     * 
     * @return 当前页数
     */
    public int getPageNow() {
        return pageNow;
    }

    /**
     * 设置当前页数
     * 
     * @param pageNow
     *            当前页数
     */
    public void setPageNow(int pageNow) {
        this.pageNow = pageNow;
    }

    /**
     * 获得总页数
     * 
     * @return 总页数
     */
    public int getPageCount() {
        return pageCount;
    }

    /**
     * 设置总页数
     * 
     * @param pageCount
     *            总页数
     */
    public void setPageCount(int pageCount) {
        this.pageCount = pageCount;
    }
}
